Computing devices enabled with appropriate software programs can be used to create images that are viewed on a display or rendered in another medium such as print or video. Software programs that enable creating images on computing devices are generically referred to herein as “graphic applications.” Graphic applications may be primarily used to create and manipulate images or may provide image creation and manipulation functions in addition to functions not directly related to image creation. An important subset of graphic applications are two dimensional, i.e., 2D, graphic applications which are used for drawing, painting, image editing, photo editing, video editing, etc.
A common problem in 2D graphic applications is accessing and manipulating occluded content. For example, during the construction of a 2D drawing, a shape may completely overlap another shape causing the overlapped shape to become occluded. Because the underlying shape is no longer visible, it may be difficult or impossible to select the underlying shape. Even if part of the underlying shape is visible, the exposed part may be too small to be easily accessible. This problem can occur whether the visual objects involved are discretely defined shapes with well-defined borders or areas with blurred edges such as in a photographic image.
It is convenient to think of a group of overlapping visual objects as a stack of infinitely thin paper cutouts. In this model, there is no true depth dimension, only dimensions along the X-axis and the Y axis. There is a depth order that is referred to as the “Z order” because it is defined along the Z-axis. The infinitely thin paper cutouts, i.e., objects, are stacked in Z order with each object having a Z-index indicating the object's location in the stack. Depending on the graphic system used, the ordering may be front to back, i.e., zero index in front, or back to front, i.e., zero index in back. For the problem of accessing overlapping objects, the relative order of the objects is more of a concern than the absolute ordering. In a stack of overlapping objects, an overlapping object is the “upper” object and the overlapped and perhaps occluded object is the “lower” object.
Barring other affordances, selecting and manipulating occluded objects requires an upper object to be moved in order to access a lower object. Unless there is an easy way to retain the original location of the upper object, it may be difficult to return the upper object to the upper object's original location. To avoid changing the location of objects, there are controls that enable successively cycling through a stack of objects until an object is “lifted” or “sunk” to the desired Z-index. Another approach that preserves locations is using a scene index. A scene index is an ordered linear list of thumbnails, i.e., small pictures, of the objects in an image. Moving an object's thumbnail up or down in the scene index causes the object to move up or down, i.e., changes the Z-index of the object.
Moving occluding objects and cycling objects are viable solutions to the occluded content problem until the total number of objects in an image grows large. For example, given a dozen or so objects, moving occluding objects or cycling through objects often requires adjusting each object more than once. The more objects there are, the more likely it is that each object will need to be adjusted. Using a scene index is less troublesome in this respect, but has another limitation. The thumbnails in a scene index tend to reduce or eliminate identifying features of objects, e.g., shape, color, size, position. For example, if there are a half-dozen red circles of varying sizes and shades in an image, all six images may appear as similarly sized red circles in the scene index. In order to include every object in an image, a scene index can grow longer than the screen height requiring the user to scroll through the scene index.